#ifndef STRING_H_
#define STRING_H_

#include <stdio.h>
#include "../data_structure/linked_list.h"

/* String */
typedef linked_list string;

/* Retorna uma nova string vazia */
string *str_new();
/* Retorna uma nova string, cópia de s */
string *str_cpy(string *s);
/* Lê uma linda da entrada padrão e a retorna sem o '\n' */
string *str_read_line();
/* Deleta a string */
void str_delete(void *s);
/* Retorna o comprimento da string */
int str_lenght(string *s);
/* Troca os caracteres da string s para a string c */
void str_replace(string *s, string *c);
/* Concatena o caracter c no final da string s */
void str_catc(string *s, char c);
/* Concatena a string c no final da string s */
void str_cats(string *s, char c[]);
/* Concatena a string c no final da string s */
void str_cat(string *s, string *c);
/* Verifica se a string c é igual à s */
int str_equals(string *s, char *c);
/* Verifica se a string s é igual à c */
int str_equal(string *s, string *c);
/* Verifica se a string s começa os a string c */
int str_starts_with(string *s, char c[]);
/* Retorna a string s em formato de array */
char *str_to_array(string *s);
/* Retorna o caracter apontado pelo iterador */
char str_get_char(ll_iterator *i);
/* Imprime a string no arquivo f */
void str_print(string *s, FILE *f);

#endif /* STRING_H_ */
